#include <stdio.h>
#include <unistd.h>
#include <string.h>

int g_val = 100;

int main()
{
    printf("father is running, pid: %d, ppid: %d\n", getpid(), getppid());

    pid_t id = fork();
    if(id == 0)
    {
        // child
        int cnt = 0;
        while(1)
        {
            printf("I am child process, pid: %d, ppid: %d, g_val: %d, &g_val: %p\n", getpid(), getppid(), g_val, &g_val);
            sleep(1);
            cnt++;
            if(cnt == 5)
            {
                g_val = 300;
                printf("I am child process, chage g_val 100 -> 300\n");
            }
        }
    }
    else
    {
        int cnt = 3;
        // father
        while(1)
        {
            printf("I am father process, pid: %d, ppid: %d, g_val: %d, &g_val: %p\n", getpid(), getppid(), g_val, &g_val);
            sleep(1);
            cnt++;
            if(cnt == 5)
            {
                g_val = 200;
                printf("I am child process, chage g_val 100 -> 300\n");
            } 
        }
    }

    return 0;
}
